﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Interfaces;
using Presentador;
using ReporteTrafico.App_Data;

namespace ReporteTrafico
{
    public partial class Home : Page, IHome
    {
        //<summary>
        // Objeto del tipo PresentadorUsuario
        //</summary> 
        PresentadorHome home;

        //<summary>
        // Constructor
        //</summary> 
        public Home()
        {
            home = new PresentadorHome(this);
        }

         //ESTO ES PARA QUE CADA VEZ QUE SE CARGE LA PÁGINA SE VALIDE SI HAY UN USUARIO LOGUEADO O NO...
         //REVISAR CORREO...
        protected void Page_Load(object sender, EventArgs e)
        {
            ////Response.Cache.SetCacheability(HttpCacheability.NoCache);

            if (!IsPostBack)
            {
                object usuarioLogueado = Session[Recursos.SesionUsuario];
                object idUsuarioLogueado = Session[Recursos.SesionIdUsuario];

                if (usuarioLogueado != null)
                {
                    LabelUsuario.Visible = true;
                    HyperLinkCerrarSesion.Visible = true;

                    string login = Convert.ToString(usuarioLogueado);
                    infoUsuario = Recursos.Saludo + login.ToUpper() + Recursos.puntuacion;

                    infoIdUsuario = Convert.ToString(idUsuarioLogueado);

                    home.ImprimeListaUbicacion();
                    home.ImprimeHora();
                }
                else
                {
                    Response.Redirect(Recursos.Login);
                }
            }
        }

        #region Encapsulamiento de Componentes
        public DropDownList Ubicacion
        {
            get { return DropDownListUbicacion; }
            set { DropDownListUbicacion = value; }
        }

        public DropDownList Hora
        {
            get { return DropDownListHora; }
            set { DropDownListHora = value; }
        }

        public DropDownList Sentido
        {
            get { return DropDownListSentido; }
            set { DropDownListSentido = value; }
        }

        public String idUbicacion
        {
            get { return DropDownListUbicacion.ID.ToString(); }
            set { value = DropDownListUbicacion.ID.ToString(); }
        }

        public String idHora
        {
            get { return DropDownListHora.ID.ToString(); }
            set { value = DropDownListHora.ID.ToString(); }
        }

        public String idSentido
        {
            get { return DropDownListSentido.ID.ToString(); }
            set { value = DropDownListSentido.ID.ToString(); }
        }

        public String infoUsuario
        {
            get { return LabelUsuario.Text; }
            set { LabelUsuario.Text = value; }
        }

        public String infoIdUsuario
        {
            get { return LabelIdUsuario.Text; }
            set { LabelIdUsuario.Text = value; }
        }

        public GridView ConfiguracionReporte
        {
            get { return GridViewInformacion; }
            set { GridViewInformacion = value; }
        }

        #endregion

        //<summary>
        // Método que imprime las opciones de Sentido del Tráfico una vez seleccionada la ubicación.
        //</summary> 
        protected void GeneraSentido(object sender, System.EventArgs e)
        {
            home.ImprimeSentido();
        }
        
        //<summary>
        // Método del botón que registra una nueva configuración de tráfico para el usuario
        //</sumnuevaConfiguracionmary> 
        protected void Button_AgregarConfiguracion(object sender, EventArgs e)
        {
            bool  nuevaConfiguracion = home.RegistraConfiguracion();

            if (nuevaConfiguracion == true)
            {
                Response.Redirect(Recursos.Home);
            }
        }


        protected void GridViewDeleteConfigReporte(Object sender, GridViewDeleteEventArgs e)
        {

            int index = e.RowIndex;
            int idConfig = Int32.Parse(GridViewInformacion.DataKeys[index].Value.ToString());

            bool eliminarConfig = home.EliminaConfiguracion(idConfig);

            if (eliminarConfig == true)
            {
                Response.Redirect(Recursos.Home);
            }
        }
    }
}